package com.comtime.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.view.View;

/***
 * 自定义进度条
 * @author spring sky
 * Email:vipa1888@163.com
 * 创建时间：2014-1-6下午3:28:51
 */
public class SpringProgressView extends View {
	
	/**分段颜色*/
	private static final int[] SECTION_COLORS = {Color.GREEN,Color.YELLOW,Color.RED};
	/**进度条最大值*/
	private int maxCount=100;
	/**进度条当前值*/
	private int currentCount;
	/**画笔*/
	private Paint mPaint;
	private int mWidth,mHeight;
	
	public SpringProgressView(Context context, AttributeSet attrs,
			int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		initView(context);
	}

	public SpringProgressView(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView(context);
	}

	public SpringProgressView(Context context) {
		super(context);
		initView(context);
	}
	
	private void initView(Context context) {
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		mPaint = new Paint();
		mPaint.setAntiAlias(true);
//		int round = mHeight/2;
//		System.out.println("max="+maxCount + "  current="+currentCount);
//		mPaint.setColor(Color.rgb(71, 76, 80));
//		RectF rectBg = new RectF(0, 0, mWidth, mHeight);
//		canvas.drawRoundRect(rectBg, round, round, mPaint);
		mPaint.setColor(Color.BLACK);
//		RectF rectBlackBg = new RectF(0, 0, mWidth-2, mHeight-2);
//		canvas.drawRoundRect(rectBlackBg, round, round, mPaint);
		canvas.drawLine(0, 0, mWidth, mHeight, mPaint);
		float section = currentCount*0.1f/maxCount;
//		RectF rectProgressBg = new RectF(0, 0, (mWidth-0)*section, mHeight-0);
		if(currentCount<=10){
			if(currentCount != 0){
				mPaint.setColor(SECTION_COLORS[3]);
			}else{
				mPaint.setColor(Color.TRANSPARENT);
			}
		}else if(currentCount>10&&currentCount<=20){
			mPaint.setColor(SECTION_COLORS[1]);
		}else{
			mPaint.setColor(SECTION_COLORS[0]);
		}
//		canvas.drawRoundRect(rectProgressBg, round, round, mPaint);
		canvas.drawLine(0, 0, (mWidth-0)*section, mHeight, mPaint);
	}
	
	private int dipToPx(int dip) {
		float scale = getContext().getResources().getDisplayMetrics().density;
		return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1));
	}
	
	/***
	 * 设置最大的进度值
	 * @param maxCount
	 */
	public void setMaxCount(int maxCount) {
		this.maxCount = maxCount;
	}
	
	/***
	 * 设置当前的进度值
	 * @param currentCount
	 */
	public void setProgress(int currentCount) {
		this.currentCount = currentCount > maxCount ? maxCount : currentCount;
		invalidate();
	}
	
	public int getMaxCount() {
		return maxCount;
	}
	
	public int getCurrentCount() {
		return currentCount;
	}
	
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
		int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec);
		int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
		int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec);
		if (widthSpecMode == MeasureSpec.EXACTLY || widthSpecMode == MeasureSpec.AT_MOST) {
			mWidth = widthSpecSize;
		} else {
			mWidth = 0;
		}
		if (heightSpecMode == MeasureSpec.AT_MOST || heightSpecMode == MeasureSpec.UNSPECIFIED) {
			mHeight = dipToPx(15);
		} else {
			mHeight = heightSpecSize;
		}
		setMeasuredDimension(mWidth, mHeight);
	}
	

	
}
